﻿using sipfe.model.dataAccess;
using sipfe.util;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace sipfe.model.encuesta
{
   public class EncuestaDAO
    {
       private BDSIPFEEntities db = new BDSIPFEEntities();

       public SIPMaeEncuesta AddNuevaEncuestaDAO(SIPMaeEncuesta MaeEncuesta)
        {
            DateTime hoy = UtilitariosUtil.FechaHoy();
            MaeEncuesta.nAnioEnc = UtilitariosUtil.yearNow();
            MaeEncuesta.nNumEnc = getNumeroEncuesta(MaeEncuesta.nIdePrograma);
            MaeEncuesta.nIdeEmpresa=1;
            MaeEncuesta.dtFecReg = DateTime.Now;
            db.SIPMaeEncuesta.Add(MaeEncuesta);
            db.SaveChanges();

            db = new BDSIPFEEntities();
            return db.SIPMaeEncuesta.Where(x => x.nIdeEncuesta == MaeEncuesta.nIdeEncuesta).FirstOrDefault();
           // return db.SIPMaeEncuesta.Where(x => x.nIdeEncuesta == n_ideEncuesta).FirstOrDefault();

        }

       private decimal getNumeroEncuesta(decimal? clase)
       {
           decimal annioNow = UtilitariosUtil.yearNow();
           StringBuilder sql = new StringBuilder();
           sql.Append("select isnull(MAX(nNumEnc),0) + 1 from SIPMaeEncuesta where nAnioEnc=").Append(annioNow).Append(" and nIdePrograma=").Append(clase);

           var max = db.Database.SqlQuery<Decimal>(sql.ToString());
           List<Decimal> valores = max.ToList<Decimal>();
           Decimal secuencia = valores.First<Decimal>();
           return secuencia;
       }

       public List<SIPMaeEncuesta> ListarEncuestaDetDAO()
       {
           StringBuilder sw = new StringBuilder("1");
           int programa = 0;
           int ambito = 0;
           string swAux = "";

           
           //return db.SIPMaeEncuesta.Where(x => x.nIdePersona == n_IdePersona).ToList();

          // return db.SIPMaeEncuesta.Where(x => x.nIdeEncuesta == 8).ToList();
          return db.SIPMaeEncuesta.ToList();
       }

       public List<SIPMaeEncuesta> ListarLlenarEncuestaDetDAO(int ide_Empresa, string n_IdePrograma, string n_IdeAmbito)
       {
           StringBuilder sw = new StringBuilder("1");
           int programa = 0;
           int ambito = 0;
           string swAux = "";

           if (!string.IsNullOrEmpty(n_IdePrograma))
           {
               sw.Append("2");
               programa = Int32.Parse(n_IdePrograma);
           }

           if (!string.IsNullOrEmpty(n_IdeAmbito))
           {
               sw.Append("3");
               //idPersona = Int32.Parse(Session[Constante.N_IDE_PERSONA].ToString());
           }
           swAux = sw.ToString();
           if (swAux.Equals("1"))
           {
               return db.SIPMaeEncuesta.Where(x => x.nIdeEmpresa == ide_Empresa).ToList();
           }
           else if (swAux.Equals("12"))
           {
               return db.SIPMaeEncuesta.Where(x => x.nIdeEmpresa == ide_Empresa && x.nIdePrograma == programa).ToList();
           }
           else if (swAux.Equals("13"))
           {
               return db.SIPMaeEncuesta.Where(x => x.nIdeEmpresa == ide_Empresa).ToList();
           }
           //return db.SIPMaeEncuesta.Where(x => x.nIdePersona == n_IdePersona).ToList();

           // return db.SIPMaeEncuesta.Where(x => x.nIdeEncuesta == 8).ToList();
           //return db.SIPMaeEncuesta.ToList();
           return null;
       }



       public SIPMaeEncuesta ListarEncuestaDetById(int n_ideEncuesta)
       {
           return db.SIPMaeEncuesta.Where(x => x.nIdeEncuesta == n_ideEncuesta).FirstOrDefault();
       }

       public SIPMaeEncuesta AddNexPreguntaEncuestaDAO(SIPDetEncuesta sipDetEncuesta)
       {
           DateTime hoy = UtilitariosUtil.FechaHoy();
           sipDetEncuesta.dtFecReg = DateTime.Now;
           db.SIPDetEncuesta.Add(sipDetEncuesta);
           db.SaveChanges();

           db = new BDSIPFEEntities();
           return db.SIPMaeEncuesta.Where(x => x.nIdeEncuesta == sipDetEncuesta.nIdeEncuesta).FirstOrDefault();
       }

       public SIPMaeEncuesta GrabarLLenadoEncuestaDAO(SIPDetEncuestaPersona sipDetEncuestaPersona)
       {
           db.SIPDetEncuestaPersona.Add(sipDetEncuestaPersona);
           db.SaveChanges();
           db = new BDSIPFEEntities();
           return db.SIPMaeEncuesta.Where(x => x.nIdeEncuesta == sipDetEncuestaPersona.nIdeEncuesta).FirstOrDefault();
       }

       public decimal verificaTarifaExisteDAO(int n_IdePersona, int n_IdeEncuesta)
       {
           SIPDetEncuestaPersona sDeP = new SIPDetEncuestaPersona();
           decimal rpta = 0;
           sDeP = db.SIPDetEncuestaPersona.Where(s => s.nIdeEncuesta == n_IdeEncuesta && s.nIdePersona == n_IdePersona && (s.dFecFinVig == null ? DateTime.Now : s.dFecFinVig) >= DateTime.Now && s.dFecIniVig <= DateTime.Now).FirstOrDefault();
           if (sDeP != null)
           {
               rpta =1;
           }
           return rpta;
       }

       /*
       public decimal verificaTarifaExisteDAO(int nideEmpresa, int nideNivel, int nideConcepto, int nModalidad)
       {
           SIPMaeTarifa maeTarifa = new SIPMaeTarifa();
           maeTarifa = db.SIPMaeTarifa.Where(s => s.nIdeInstitucion == nideEmpresa && s.nIdeNivel == nideNivel && s.nIdeConcepto == nideConcepto
                       && s.nIdeModalidad == nModalidad && (s.dFecFinVig == null ? DateTime.Now : s.dFecFinVig) >= DateTime.Now && s.dFecIniVig <= DateTime.Now)
                       .FirstOrDefault();

           decimal rpta = 0;
           if (maeTarifa != null)
           {
               rpta = maeTarifa.nIdeTarifa;
           }
           return rpta;
       }
       */


    }
}
